<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>angular test</title>
    <style type="text/css">
        #editor-trigger {
            width: 100%;
            height: 200px;
        }
    </style>

    <link rel="stylesheet" type="text/css" href="dist/css/wangEditor.min.css">

    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
    
    <div ng-app="editorContainer" ng-controller="editorCtrl">
        <p>wangEditor 集成到 angular 的示例</p>
        <div ng-model="editorContent" contenteditable="true"  style="height:1400px;"></div>
    </div>

    <script type="text/javascript" src="dist/js/lib/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="dist/js/wangEditor.js"></script>
    <script type="text/javascript">
        var app = angular.module('editorContainer', []);
        app.controller('editorCtrl', function ($scope) {
            //$scope.editorContent = '';
        });
        app.directive('contenteditable', function () {
            return {
                restrict: 'A',
                require: '?ngModel',
                link: function (scope, element, attrs, ngModel) {
                    // 初始化 编辑器内容
                    if (!ngModel) { // 如果没有ngmodel 则退出此方法
                        return;
                    }
                    // 更新富文本编辑器的内容
                    ngModel.$render = function () {
                        element.html(ngModel.$viewValue || '');
                    };
                    //监听有没有变化
                    element.on('blur keyup change', function () {
                        scope.$apply(readViewText);

                    });
                    // 不需要初始化,初始化基于angularjs ng-model 属性的文本 
                    // 将数据写入模型
                    function readViewText() {
                        var html = element.html();
                        console.log("--txt:" + element.text());
                        // 当我们清除了可编辑内容 时浏览器会留下一个
                        //如果strip-br 属性 带上这个属性                        
                        if (attrs.stripBr && html === '<br>') {
                            html = '';
                        }
                        console.log(html);
                        ngModel.$setViewValue(html);
                    }

                    // 阻止输出log
                    // wangEditor.config.printLog = false;
                    // 创建编辑器
                    var editor = new wangEditor(element);
                    // 上传图片 必须在创建前配置
                    editor.config.uploadImgUrl = 'http://192.168.1.102:8080/Kapi/EditorUpload';
                    // 是否禁用图片地址插入
                    editor.config.hideLinkImg = true;
                    // 自定义load事件  可以判断文件或者图片上传
                    editor.config.uploadImgFns.onload = function (resultText, xhr) {
                        // resultText 服务器端返回的text
                        // xhr 是 xmlHttpRequest 对象，IE8、9中不支持
                        debugger;
                        // 上传图片时，已经将图片的名字存在 editor.uploadImgOriginalName
                        var originalName = editor.uploadImgOriginalName || '';

                        // 如果 resultText 是图片的url地址，可以这样插入图片：
                        editor.command(null, 'insertHtml', '<img src="' + resultText + '" alt="' + originalName + '" style="max-width:100%;"/>');
                        // 如果不想要 img 的 max-width 样式，也可以这样插入：
                        // editor.command(null, 'InsertImage', resultText);
                    };

                    //                    // 自定义timeout事件
                    //                    editor.config.uploadImgFns.ontimeout = function (xhr) {
                    //                        // xhr 是 xmlHttpRequest 对象，IE8、9中不支持
                    //                        alert('上传超时');
                    //                    };

                    //                    // 自定义error事件
                    //                    editor.config.uploadImgFns.onerror = function (xhr) {
                    //                        // xhr 是 xmlHttpRequest 对象，IE8、9中不支持
                    //                        alert('上传错误');
                    //                    };
                    editor.config.menus = [
                                'source',
                                '|',
                                'bold',
                                'underline',
                                'italic',
                                'strikethrough',
                                'eraser',
                                'forecolor',
                                'bgcolor',
                                '|',
                                'quote',
                                'fontfamily',
                                'fontsize',
                                'head',
                                'unorderlist',
                                'orderlist',
                                'alignleft',
                                'aligncenter',
                                'alignright',
                                '|',
                                'link',
                                'unlink',
                                'table',
                                'emotion',
                                '|',
                                'img',
                                'video',
                                'location',
                                'insertcode',
                                '|',
                                'undo',
                                'redo',
                                'fullscreen'
                    ];
                    // 关闭js过滤
                    editor.config.jsFilter = false;
                    // 取消粘贴过滤
                    editor.config.pasteFilter = false;
                    console.log(editor);

                    editor.create();

                    // 禁用
                    //editor.disable();
                    // 启用
                    //editor.enable();

                }
            };
        });
    </script>
</body>
</html>
